package com.example.demo.service.impl;

import com.example.demo.mapper.SelectorMapper;
import com.example.demo.mapper.entity.*;
import com.example.demo.service.SelectorService;
import com.example.demo.utils.TestCaseNodeDo;
import com.example.demo.utils.TreeBo;
import com.example.demo.utils.TreeUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

@Service
public class SelectorServiceImpl implements SelectorService {
    @Autowired
    private SelectorMapper mapper;
    @Override
    public List<Item> getItemList() {
        List<Item> logs = mapper.getItemList();
        return logs;
    }

    @Override
    public List<Attribute> getAttributeList() {
        List<Attribute> logs = mapper.getAttributeList();
        return logs;
    }

    @Override
    public List<TreeBo> selectClothingTree() {
        // 先从数据库中查询所有数据，保存为list
        List<Clothing> currentClothing = mapper.getClothingSort(); // 获取原始clothing列表
        List<TestCaseNodeDo> nodeList = new ArrayList<>();
        TreeUtil treeUtil = new TreeUtil(); // 创建 TreeUtil 对象实例
        for(Clothing clothing : currentClothing) {
            TestCaseNodeDo permissionTree = new TestCaseNodeDo();
            permissionTree.setValue(clothing.getClothingId());
            permissionTree.setLabel(clothing.getClothingName());
            permissionTree.setParentId(clothing.getType());
            permissionTree.setLevel(2);
            nodeList.add(permissionTree); //将转换后的PermissionTree对象添加到nowTreeNodes中
        }

        TestCaseNodeDo testCaseNodeDo1 = new TestCaseNodeDo();
        testCaseNodeDo1.setLabel("发型");
        testCaseNodeDo1.setLevel(1);
        testCaseNodeDo1.setValue(1);
        nodeList.add(testCaseNodeDo1);

        TestCaseNodeDo testCaseNodeDo2 = new TestCaseNodeDo();
        testCaseNodeDo2.setLabel("上衣");
        testCaseNodeDo2.setLevel(1);
        testCaseNodeDo2.setValue(2);
        nodeList.add(testCaseNodeDo2);

        TestCaseNodeDo testCaseNodeDo3 = new TestCaseNodeDo();
        testCaseNodeDo3.setLabel("下装");
        testCaseNodeDo3.setLevel(1);
        testCaseNodeDo3.setValue(3);
        nodeList.add(testCaseNodeDo3);

        TestCaseNodeDo testCaseNodeDo4 = new TestCaseNodeDo();
        testCaseNodeDo4.setLabel("鞋子");
        testCaseNodeDo4.setLevel(1);
        testCaseNodeDo4.setValue(4);
        nodeList.add(testCaseNodeDo4);

        // 最终返回结果
        List<TreeBo> treeList = treeUtil.buildTree(nodeList);

        return treeList;
    }

    @Override
    public List<TreeBo> selectCouponsTree() {
        // 先从数据库中查询所有数据，保存为list
        List<Coupons> currentCoupons = mapper.getCouponsSort(); // 获取原始clothing列表
        List<TestCaseNodeDo> nodeList = new  ArrayList<>();
        TreeUtil treeUtil = new TreeUtil(); // 创建 TreeUtil 对象实例
        for(Coupons coupons : currentCoupons) {
            TestCaseNodeDo permissionTree = new TestCaseNodeDo();
            permissionTree.setValue(coupons.getCouponsId());
            permissionTree.setLabel(coupons.getCouponsName());
            permissionTree.setParentId(coupons.getCouponsType());
            permissionTree.setLevel(2);
            nodeList.add(permissionTree); //将转换后的PermissionTree对象添加到nowTreeNodes中
        }

        TestCaseNodeDo testCaseNodeDo1 = new TestCaseNodeDo();
        testCaseNodeDo1.setLabel("代金券");
        testCaseNodeDo1.setLevel(1);
        testCaseNodeDo1.setValue(1);
        nodeList.add(testCaseNodeDo1);

        TestCaseNodeDo testCaseNodeDo2 = new TestCaseNodeDo();
        testCaseNodeDo2.setLabel("满减劵");
        testCaseNodeDo2.setLevel(1);
        testCaseNodeDo2.setValue(2);
        nodeList.add(testCaseNodeDo2);

        TestCaseNodeDo testCaseNodeDo3 = new TestCaseNodeDo();
        testCaseNodeDo3.setLabel("折扣劵");
        testCaseNodeDo3.setLevel(1);
        testCaseNodeDo3.setValue(3);
        nodeList.add(testCaseNodeDo3);

        TestCaseNodeDo testCaseNodeDo4 = new TestCaseNodeDo();
        testCaseNodeDo4.setLabel("兑换券");
        testCaseNodeDo4.setLevel(1);
        testCaseNodeDo4.setValue(4);
        nodeList.add(testCaseNodeDo4);

        // 最终返回结果
        List<TreeBo> treeList = treeUtil.buildTree(nodeList);

        return treeList;
    }

    @Override
    public List<TreeBo> selectBadgeTree() {
        List<Badge> currentBdage = mapper.getBadgeSort();
        List<TestCaseNodeDo> nodeList = new ArrayList<>();
        TreeUtil treeUtil = new TreeUtil(); // 创建 TreeUtil 对象实例
        for(Badge badge : currentBdage) {
            TestCaseNodeDo permissionTree = new TestCaseNodeDo();
            permissionTree.setValue(badge.getBadgeId());
            permissionTree.setLabel(badge.getName());
            permissionTree.setParentId(badge.getType());
            permissionTree.setLevel(2);
            nodeList.add(permissionTree);
        }

        //1是'成长徽章', 2是'成就徽章', 3是'特殊徽章'
        TestCaseNodeDo testCaseNodeDo1 = new TestCaseNodeDo();
        testCaseNodeDo1.setLabel("成长徽章");
        testCaseNodeDo1.setLevel(1);
        testCaseNodeDo1.setValue(1);
        nodeList.add(testCaseNodeDo1);

        TestCaseNodeDo testCaseNodeDo2 = new TestCaseNodeDo();
        testCaseNodeDo2.setLabel("成就徽章");
        testCaseNodeDo2.setLevel(1);
        testCaseNodeDo2.setValue(2);
        nodeList.add(testCaseNodeDo2);

        TestCaseNodeDo testCaseNodeDo3 = new TestCaseNodeDo();
        testCaseNodeDo3.setLabel("特殊徽章");
        testCaseNodeDo3.setLevel(1);
        testCaseNodeDo3.setValue(3);
        nodeList.add(testCaseNodeDo3);

        // 最终返回结果
        List<TreeBo> treeList = treeUtil.buildTree(nodeList);

        return treeList;
    }

    @Override
    public List<College> getCollegeList() {
        return mapper.getCollegeList();
    }

    @Override
    public List<Major> getMajorList(int collegeId) {
        return mapper.findMajorByFather(collegeId);
    }

    @Override
    public List<Clazz> getClazzList(int majorId) {
        return mapper.findClazzByFather(majorId);
    }

}
